#ifndef IHM_H
#define IHM_H

#include <QtGui/QWidget>
#include <QFileDialog>
#include <QHash>
#include "ui_ihm.h"
#include "Interface.h"
#include "qdisplayfield.h"
#include "qdisplayterms.h"
#include "qdisplayresult.h"
#include "qdisplaycodeplp.h"
#include "qbuttonmanager.h"
#include "qdisplayreport.h"
#include "qsettingsihm.h"
#include <qmessagebox.h>

class IHM : public QWidget
{
  Q_OBJECT

public:
  IHM(QWidget *parent = 0, Qt::WFlags flags = 0);
  ~IHM();
  
public slots:
  void analyse(const QString&);
  void selectionListChanged();
  void validTerms();
  void searchAll();
  void showSettings();
  void showReport();
  void destroySettings();
  void changeCurrentLines(const QStringList& );
  void addNewPLP(const QStringList&);
  void modifyPLP(const QStringList& part);
  void checkAgain(QString id);
  void generateBOM();
private:

  void init();
  void searchEquivalence(QEXPPart* part);
   

  Ui::IHMClass ui;
  QFileDialog m_open;
  Interface* m_interface;
  QDisplayField* m_display;
  QDisplayTerms* m_terms;
  QDisplayCodePLP* m_plp;
  QDisplayResult* m_results;
  QButtonManager* m_buttons;
  QSettingsIHM* m_settings;
  ReportFile* m_report;
  QDisplayReport* m_reportDisplay;
};

#endif // IHM_H
